/**
    @brief Module User, fichier source
    @file user.cpp
    @version 1.0
    @date 2008/11/01

*/
#include <string>
#include <sys/types.h>
#include <pwd.h>
#include <unistd.h>
#include <iostream>
#include "user.h"

/**
    @brief Constructeur d'Utilisateur
    @return none
*/
User::User()
{
    passwd* systemUser;
    systemUser = getpwuid(getuid());
    setNickname(string(systemUser->pw_name));
//    delete systemUser;
}

/**
    @brief Constructeur d'Utilisateur
    @param [in] name Nom de l'utilisateur
    @return none
*/
User::User(string name)
{
    nickname = name;
}
/**
    @brief Constructeur d'Utilisateur
    @param [in] name Nom de l'utilisateur
    @param [in] ad Ip de l'utilisateur
    @return none
*/
User::User(string name,string ad)
{
    nickname = name;
    address = ad;
}

bool User::operator<(const User& u) const
{
    return (nickname < u._nickname());
}

/**
    @brief Accesseur nom de l'utilisateur
    @return string: nom du l'utilisateur
*/
string User::_nickname(void) const
{
    return nickname;
}

/**
    @brief Accesseur Adresse Ip de l'utilisateur
    @return string: Adresse Ip de l'utilisateur
*/
string User::_address(void) const
{
    return address;
}

/**
    @brief Mutateur nom de l'utilisateur
    @param [in] name Nom de l'utilisateur
    @return none
*/

void User::setNickname(string name)
{
    nickname = name;
}
/**
    @brief Mutateur l'adresse Ip de l'utilisateur
    @param [in] ad Adresse de l'utilisateur
    @return none
*/
void User::setAddress(string ad)
{
    address = ad;
}

/**
    @brief Surcharge opérateur égale
    @return bool
*/
bool User::operator==(const User &u) const
{
    return ((nickname==u._nickname())&&(address==u._address()));
}

